home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / mac-perl / gs_102st.bin / GUSI / GUSIUDP.cp < prev    next >
MacBinary  |  1992-09-15  |  10.3 KB  |  [TEXT/MPS ]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert MS-DOS Code Page Info (other/dosCodePage) ext Unsupported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, Tue Sep 15 00:09:06 1992, modified Tue Sep 15 00:09:06 1992, creator 'MPS ', type ASCII, 9618 bytes "GUSIUDP.cp" , at 0x2612 610 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPS ]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0a 47 55 53 49 55 44 | 50 2e 63 70 00 00 00 00 |..GUSIUD|P.cp....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 25 92 00 | 00 02 62 a6 db 12 62 a6 |.....%..|..b...b.|
|00000060| db 12 62 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..b.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 f0 6d 00 00 |........|.....m..|
|00000080| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00000090| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000c0| 2a 2a 2a 2a 2a 2a 0d 50 | 72 6f 6a 65 63 74 09 3a |******.P|roject.:|
|000000d0| 09 47 55 53 49 09 09 09 | 09 2d 09 47 72 61 6e 64 |.GUSI...|.-.Grand|
|000000e0| 20 55 6e 69 66 69 65 64 | 20 53 6f 63 6b 65 74 20 | Unified| Socket |
|000000f0| 49 6e 74 65 72 66 61 63 | 65 0d 46 69 6c 65 09 09 |Interfac|e.File..|
|00000100| 3a 09 47 55 53 49 55 44 | 50 2e 63 70 09 09 2d 09 |:.GUSIUD|P.cp..-.|
|00000110| 55 44 50 20 44 61 74 61 | 67 72 61 6d 20 53 6f 63 |UDP Data|gram Soc|
|00000120| 6b 65 74 73 0d 41 75 74 | 68 6f 72 09 3a 09 4d 61 |kets.Aut|hor.:.Ma|
|00000130| 74 74 68 69 61 73 20 4e | 65 65 72 61 63 68 65 72 |tthias N|eeracher|
|00000140| 0d 0d 09 54 68 69 73 20 | 66 69 6c 65 20 77 61 73 |...This |file was|
|00000150| 20 64 65 72 69 76 65 64 | 20 66 72 6f 6d 20 74 68 | derived| from th|
|00000160| 65 20 73 6f 63 6b 65 74 | 20 6c 69 62 72 61 72 79 |e socket| library|
|00000170| 20 62 79 20 0d 09 0d 09 | 09 43 68 61 72 6c 69 65 | by ....|.Charlie|
|00000180| 20 52 65 69 6d 61 6e 09 | 3c 63 72 65 69 6d 61 6e | Reiman.|<creiman|
|00000190| 40 6e 63 73 61 2e 75 69 | 75 63 2e 65 64 75 3e 20 |@ncsa.ui|uc.edu> |
|000001a0| 61 6e 64 0d 09 09 54 6f | 6d 20 4d 69 6c 6c 69 67 |and...To|m Millig|
|000001b0| 61 6e 09 3c 6d 69 6c 6c | 69 67 61 6e 40 6d 61 64 |an.<mill|igan@mad|
|000001c0| 68 61 75 73 2e 75 74 63 | 73 2e 75 74 6f 72 6f 6e |haus.utc|s.utoron|
|000001d0| 74 6f 2e 63 61 3e 0d 09 | 09 20 20 0d 53 74 61 72 |to.ca>..|. .Star|
|000001e0| 74 65 64 09 3a 09 31 32 | 41 75 67 39 32 09 09 09 |ted.:.12|Aug92...|
|000001f0| 09 09 09 09 09 4c 61 6e | 67 75 61 67 65 09 3a 09 |.....Lan|guage.:.|
|00000200| 4d 50 57 20 43 2f 43 2b | 2b 0d 4d 6f 64 69 66 69 |MPW C/C+|+.Modifi|
|00000210| 65 64 09 3a 09 31 36 41 | 75 67 39 32 09 53 70 6c |ed.:.16A|ug92.Spl|
|00000220| 69 74 20 6f 66 66 0d 09 | 09 09 09 32 35 41 75 67 |it off..|...25Aug|
|00000230| 39 32 09 4d 4e 09 53 74 | 61 72 74 65 64 20 70 75 |92.MN.St|arted pu|
|00000240| 74 74 69 6e 67 20 73 6f | 6d 65 20 72 65 61 6c 20 |tting so|me real |
|00000250| 77 6f 72 6b 20 69 6e 0d | 09 09 09 09 31 34 53 65 |work in.|....14Se|
|00000260| 70 39 32 09 4d 4e 09 73 | 65 6c 65 63 74 28 29 20 |p92.MN.s|elect() |
|00000270| 64 69 64 6e 27 74 20 72 | 65 74 75 72 6e 20 65 6e |didn't r|eturn en|
|00000280| 6f 75 67 68 20 67 6f 6f | 64 69 65 73 2e 0d 4c 61 |ough goo|dies..La|
|00000290| 73 74 09 09 3a 09 31 34 | 53 65 70 39 32 0d 2a 2a |st..:.14|Sep92.**|
|000002a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002e0| 2a 2a 2a 2f 0d 0d 23 69 | 6e 63 6c 75 64 65 20 22 |***/..#i|nclude "|
|000002f0| 47 55 53 49 49 4e 45 54 | 5f 50 2e 68 22 0d 0d 23 |GUSIINET|_P.h"..#|
|00000300| 70 72 61 67 6d 61 20 66 | 6f 72 63 65 5f 61 63 74 |pragma f|orce_act|
|00000310| 69 76 65 20 6f 6e 0d 0d | 2f 2a 2a 2a 2a 2a 2a 2a |ive on..|/*******|
|00000320| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 20 |********|******* |
|00000330| 43 6f 6d 70 6c 65 74 69 | 6f 6e 20 70 72 6f 63 65 |Completi|on proce|
|00000340| 64 75 72 65 73 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |dures **|********|
|00000350| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2f 0d 0d |********|*****/..|
|00000360| 23 70 72 61 67 6d 61 20 | 73 65 67 6d 65 6e 74 20 |#pragma |segment |
|00000370| 47 55 53 49 52 65 73 69 | 64 65 6e 74 0d 0d 76 6f |GUSIResi|dent..vo|
|00000380| 69 64 20 75 64 70 5f 72 | 65 61 64 5f 61 68 65 61 |id udp_r|ead_ahea|
|00000390| 64 5f 64 6f 6e 65 28 41 | 6e 6e 6f 74 61 74 65 64 |d_done(A|nnotated|
|000003a0| 50 42 20 2a 70 62 29 0d | 7b 0d 09 55 44 50 53 6f |PB *pb).|{..UDPSo|
|000003b0| 63 6b 65 74 20 2a 09 09 | 73 6f 63 6b 09 3d 09 28 |cket *..|sock.=.(|
|000003c0| 55 44 50 53 6f 63 6b 65 | 74 20 2a 29 20 70 62 2d |UDPSocke|t *) pb-|
|000003d0| 3e 4f 77 6e 65 72 28 29 | 3b 0d 09 55 44 50 69 6f |>Owner()|;..UDPio|
|000003e0| 70 62 20 2a 09 09 75 64 | 70 09 3d 09 70 62 2d 3e |pb *..ud|p.=.pb->|
|000003f0| 55 44 50 28 29 3b 0d 0d | 09 69 66 20 28 21 75 64 |UDP();..|.if (!ud|
|00000400| 70 2d 3e 69 6f 52 65 73 | 75 6c 74 29 20 7b 0d 09 |p->ioRes|ult) {..|
|00000410| 09 73 6f 63 6b 2d 3e 72 | 65 63 76 42 75 66 09 3d |.sock->r|ecvBuf.=|
|00000420| 20 75 64 70 2d 3e 63 73 | 50 61 72 61 6d 2e 72 65 | udp->cs|Param.re|
|00000430| 63 65 69 76 65 2e 72 63 | 76 42 75 66 66 3b 0d 09 |ceive.rc|vBuff;..|
|00000440| 09 73 6f 63 6b 2d 3e 72 | 65 63 76 64 09 09 3d 20 |.sock->r|ecvd..= |
|00000450| 75 64 70 2d 3e 63 73 50 | 61 72 61 6d 2e 72 65 63 |udp->csP|aram.rec|
|00000460| 65 69 76 65 2e 72 63 76 | 42 75 66 66 4c 65 6e 3b |eive.rcv|BuffLen;|
|00000470| 0d 09 7d 20 65 6c 73 65 | 20 7b 0d 09 09 73 6f 63 |..} else| {...soc|
|00000480| 6b 2d 3e 72 65 63 76 42 | 75 66 09 3d 20 6e 69 6c |k->recvB|uf.= nil|
|00000490| 3b 0d 09 09 73 6f 63 6b | 2d 3e 72 65 63 76 64 09 |;...sock|->recvd.|
|000004a0| 09 3d 20 30 3b 0d 09 7d | 0d 09 73 6f 63 6b 2d 3e |.= 0;..}|..sock->|
|000004b0| 61 73 79 6e 63 65 72 72 | 20 3d 20 75 64 70 2d 3e |asyncerr| = udp->|
|000004c0| 69 6f 52 65 73 75 6c 74 | 3b 0d 7d 0d 0d 76 6f 69 |ioResult|;.}..voi|
|000004d0| 64 20 75 64 70 5f 73 65 | 6e 64 5f 64 6f 6e 65 28 |d udp_se|nd_done(|
|000004e0| 41 6e 6e 6f 74 61 74 65 | 64 50 42 20 2a 70 62 29 |Annotate|dPB *pb)|
|000004f0| 0d 7b 09 0d 09 55 44 50 | 69 6f 70 62 20 2a 09 09 |.{...UDP|iopb *..|
|00000500| 75 64 70 09 3d 09 70 62 | 2d 3e 55 44 50 28 29 3b |udp.=.pb|->UDP();|
|00000510| 0d 09 0d 09 28 28 6d 69 | 6e 69 77 64 73 20 2a 29 |....((mi|niwds *)|
|00000520| 75 64 70 2d 3e 63 73 50 | 61 72 61 6d 2e 73 65 6e |udp->csP|aram.sen|
|00000530| 64 2e 77 64 73 50 74 72 | 29 2d 3e 74 65 72 6d 69 |d.wdsPtr|)->termi|
|00000540| 6e 75 73 09 3d 20 75 64 | 70 2d 3e 69 6f 52 65 73 |nus.= ud|p->ioRes|
|00000550| 75 6c 74 3b 0d 09 28 28 | 6d 69 6e 69 77 64 73 20 |ult;..((|miniwds |
|00000560| 2a 29 75 64 70 2d 3e 63 | 73 50 61 72 61 6d 2e 73 |*)udp->c|sParam.s|
|00000570| 65 6e 64 2e 77 64 73 50 | 74 72 29 2d 3e 70 74 72 |end.wdsP|tr)->ptr|
|00000580| 09 09 3d 20 6e 69 6c 3b | 0d 7d 0d 0d 23 70 72 61 |..= nil;|.}..#pra|
|00000590| 67 6d 61 20 73 65 67 6d | 65 6e 74 20 47 55 53 49 |gma segm|ent GUSI|
|000005a0| 49 4e 45 54 0d 0d 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |INET../*|********|
|000005b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 20 |********|******* |
|000005c0| 55 44 50 53 6f 63 6b 65 | 74 20 6d 65 6d 62 65 72 |UDPSocke|t member|
|000005d0| 73 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |s ******|********|
|000005e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0d 0d 55 44 |********|***/..UD|
|000005f0| 50 53 6f 63 6b 65 74 3a | 3a 55 44 50 53 6f 63 6b |PSocket:|:UDPSock|
|00000600| 65 74 28 29 0d 09 3a 09 | 49 4e 45 54 53 6f 63 6b |et()..:.|INETSock|
|00000610| 65 74 28 29 0d 7b 0d 09 | 73 73 74 61 74 65 20 3d |et().{..|sstate =|
|00000620| 20 53 4f 43 4b 5f 53 54 | 41 54 45 5f 4e 4f 5f 53 | SOCK_ST|ATE_NO_S|
|00000630| 54 52 45 41 4d 3b 0d 7d | 0d 0d 55 44 50 53 6f 63 |TREAM;.}|..UDPSoc|
|00000640| 6b 65 74 3a 3a 7e 55 44 | 50 53 6f 63 6b 65 74 28 |ket::~UD|PSocket(|
|00000650| 29 0d 7b 0d 09 55 44 50 | 69 6f 70 62 20 2a 09 70 |).{..UDP|iopb *.p|
|00000660| 62 3b 0d 09 0d 09 69 66 | 20 28 73 73 74 61 74 65 |b;....if| (sstate|
|00000670| 20 3d 3d 20 53 4f 43 4b | 5f 53 54 41 54 45 5f 4e | == SOCK|_STATE_N|
|00000680| 4f 5f 53 54 52 45 41 4d | 29 0d 09 09 72 65 74 75 |O_STREAM|)...retu|
|00000690| 72 6e 3b 0d 09 0d 09 70 | 62 09 09 09 09 09 3d 20 |rn;....p|b.....= |
|000006a0| 47 65 74 50 42 28 29 3b | 09 0d 09 70 62 2d 3e 63 |GetPB();|...pb->c|
|000006b0| 73 43 6f 64 65 20 09 09 | 3d 20 55 44 50 52 65 6c |sCode ..|= UDPRel|
|000006c0| 65 61 73 65 3b 0d 09 0d | 09 69 66 20 28 21 50 42 |ease;...|.if (!PB|
|000006d0| 43 6f 6e 74 72 6f 6c 53 | 79 6e 63 28 50 61 72 6d |ControlS|ync(Parm|
|000006e0| 42 6c 6b 50 74 72 28 70 | 62 29 29 29 0d 09 09 44 |BlkPtr(p|b)))...D|
|000006f0| 69 73 70 6f 73 50 74 72 | 28 70 62 2d 3e 63 73 50 |isposPtr|(pb->csP|
|00000700| 61 72 61 6d 2e 63 72 65 | 61 74 65 2e 72 63 76 42 |aram.cre|ate.rcvB|
|00000710| 75 66 66 29 3b 0d 7d 0d | 0d 55 44 50 69 6f 70 62 |uff);.}.|.UDPiopb|
|00000720| 20 2a 20 55 44 50 53 6f | 63 6b 65 74 3a 3a 47 65 | * UDPSo|cket::Ge|
|00000730| 74 50 42 28 29 0d 7b 0d | 09 41 6e 6e 6f 74 61 74 |tPB().{.|.Annotat|
|00000740| 65 64 50 42 20 2a 09 70 | 62 09 09 3d 09 49 4e 45 |edPB *.p|b..=.INE|
|00000750| 54 53 6f 63 6b 65 74 73 | 2e 47 65 74 50 42 28 29 |TSockets|.GetPB()|
|00000760| 3b 0d 09 70 62 2d 3e 55 | 44 50 28 29 2d 3e 69 6f |;..pb->U|DP()->io|
|00000770| 43 52 65 66 4e 75 6d 20 | 3d 09 49 4e 45 54 53 6f |CRefNum |=.INETSo|
|00000780| 63 6b 65 74 73 2e 44 72 | 69 76 65 72 28 29 3b 0d |ckets.Dr|iver();.|
|00000790| 09 70 62 2d 3e 55 44 50 | 28 29 2d 3e 75 64 70 53 |.pb->UDP|()->udpS|
|000007a0| 74 72 65 61 6d 09 3d 09 | 73 74 72 65 61 6d 3b 0d |tream.=.|stream;.|
|000007b0| 09 0d 09 70 62 2d 3e 53 | 65 74 4f 77 6e 65 72 28 |...pb->S|etOwner(|
|000007c0| 74 68 69 73 29 3b 0d 09 | 0d 09 72 65 74 75 72 6e |this);..|..return|
|000007d0| 20 70 62 2d 3e 55 44 50 | 28 29 3b 0d 7d 0d 0d 75 | pb->UDP|();.}..u|
|000007e0| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 55 44 50 |nsigned |long UDP|
|000007f0| 53 6f 63 6b 65 74 3a 3a | 41 76 61 69 6c 61 62 6c |Socket::|Availabl|
|00000800| 65 28 29 0d 7b 0d 09 72 | 65 74 75 72 6e 20 28 61 |e().{..r|eturn (a|
|00000810| 73 79 6e 63 65 72 72 20 | 3d 3d 20 69 6e 50 72 6f |syncerr |== inPro|
|00000820| 67 72 65 73 73 29 20 3f | 20 30 20 3a 20 72 65 63 |gress) ?| 0 : rec|
|00000830| 76 64 3b 0d 7d 0d 0d 69 | 6e 74 20 55 44 50 53 6f |vd;.}..i|nt UDPSo|
|00000840| 63 6b 65 74 3a 3a 4e 65 | 77 53 74 72 65 61 6d 28 |cket::Ne|wStream(|
|00000850| 29 0d 7b 0d 09 4f 53 45 | 72 72 09 09 09 65 72 72 |).{..OSE|rr...err|
|00000860| 3b 0d 09 55 44 50 69 6f | 70 62 20 2a 09 70 62 3b |;..UDPio|pb *.pb;|
|00000870| 0d 0d 09 70 62 09 09 09 | 09 09 09 09 09 09 09 3d |...pb...|.......=|
|00000880| 20 47 65 74 50 42 28 29 | 3b 0d 09 70 62 2d 3e 63 | GetPB()|;..pb->c|
|00000890| 73 43 6f 64 65 20 09 09 | 09 09 09 09 09 3d 20 55 |sCode ..|.....= U|
|000008a0| 44 50 43 72 65 61 74 65 | 3b 0d 09 70 62 2d 3e 63 |DPCreate|;..pb->c|
|000008b0| 73 50 61 72 61 6d 2e 63 | 72 65 61 74 65 2e 72 63 |sParam.c|reate.rc|
|000008c0| 76 42 75 66 66 20 09 3d | 20 28 63 68 61 72 20 2a |vBuff .=| (char *|
|000008d0| 29 4e 65 77 50 74 72 28 | 53 54 52 45 41 4d 5f 42 |)NewPtr(|STREAM_B|
|000008e0| 55 46 46 45 52 5f 53 49 | 5a 45 29 3b 0d 09 70 62 |UFFER_SI|ZE);..pb|
|000008f0| 2d 3e 63 73 50 61 72 61 | 6d 2e 63 72 65 61 74 65 |->csPara|m.create|
|00000900| 2e 72 63 76 42 75 66 66 | 4c 65 6e 09 3d 20 53 54 |.rcvBuff|Len.= ST|
|00000910| 52 45 41 4d 5f 42 55 46 | 46 45 52 5f 53 49 5a 45 |REAM_BUF|FER_SIZE|
|00000920| 3b 0d 09 70 62 2d 3e 63 | 73 50 61 72 61 6d 2e 63 |;..pb->c|sParam.c|
|00000930| 72 65 61 74 65 2e 6e 6f | 74 69 66 79 50 72 6f 63 |reate.no|tifyProc|
|00000940| 09 3d 20 4e 55 4c 4c 3b | 0d 09 70 62 2d 3e 63 73 |.= NULL;|..pb->cs|
|00000950| 50 61 72 61 6d 2e 63 72 | 65 61 74 65 2e 6c 6f 63 |Param.cr|eate.loc|
|00000960| 61 6c 50 6f 72 74 20 09 | 3d 20 73 61 2e 73 69 6e |alPort .|= sa.sin|
|00000970| 5f 70 6f 72 74 3b 0d 09 | 0d 09 69 66 20 28 65 72 |_port;..|..if (er|
|00000980| 72 20 3d 20 50 42 43 6f | 6e 74 72 6f 6c 53 79 6e |r = PBCo|ntrolSyn|
|00000990| 63 28 50 61 72 6d 42 6c | 6b 50 74 72 28 70 62 29 |c(ParmBl|kPtr(pb)|
|000009a0| 29 29 0d 09 09 72 65 74 | 75 72 6e 20 54 43 50 5f |))...ret|urn TCP_|
|000009b0| 65 72 72 6f 72 28 65 72 | 72 29 3b 0d 09 09 0d 09 |error(er|r);.....|
|000009c0| 73 74 72 65 61 6d 20 09 | 09 3d 20 70 62 2d 3e 75 |stream .|.= pb->u|
|000009d0| 64 70 53 74 72 65 61 6d | 3b 0d 09 73 61 2e 73 69 |dpStream|;..sa.si|
|000009e0| 6e 5f 70 6f 72 74 20 3d | 20 70 62 2d 3e 63 73 50 |n_port =| pb->csP|
|000009f0| 61 72 61 6d 2e 63 72 65 | 61 74 65 2e 6c 6f 63 61 |aram.cre|ate.loca|
|00000a00| 6c 50 6f 72 74 3b 0d 09 | 0d 09 73 73 74 61 74 65 |lPort;..|..sstate|
|00000a10| 20 09 3d 20 53 4f 43 4b | 5f 53 54 41 54 45 5f 55 | .= SOCK|_STATE_U|
|00000a20| 4e 43 4f 4e 4e 45 43 54 | 45 44 3b 0d 09 72 65 63 |NCONNECT|ED;..rec|
|00000a30| 76 64 20 09 3d 20 30 3b | 0d 09 72 65 63 76 42 75 |vd .= 0;|..recvBu|
|00000a40| 66 20 09 3d 20 30 3b 0d | 09 61 73 79 6e 63 65 72 |f .= 0;.|.asyncer|
|00000a50| 72 09 3d 20 69 6e 50 72 | 6f 67 72 65 73 73 3b 0d |r.= inPr|ogress;.|
|00000a60| 0d 09 72 65 74 75 72 6e | 20 52 65 61 64 41 68 65 |..return| ReadAhe|
|00000a70| 61 64 28 29 3b 0d 7d 0d | 0d 69 6e 74 20 55 44 50 |ad();.}.|.int UDP|
|00000a80| 53 6f 63 6b 65 74 3a 3a | 46 6c 75 73 68 52 65 61 |Socket::|FlushRea|
|00000a90| 64 41 68 65 61 64 28 29 | 0d 7b 0d 09 4f 53 45 72 |dAhead()|.{..OSEr|
|00000aa0| 72 09 09 09 65 72 72 3b | 0d 09 55 44 50 69 6f 70 |r...err;|..UDPiop|
|00000ab0| 62 20 2a 09 70 62 3b 0d | 0d 09 2f 2a 20 66 6c 75 |b *.pb;.|../* flu|
|00000ac0| 73 68 20 74 68 65 20 72 | 65 61 64 2d 61 68 65 61 |sh the r|ead-ahea|
|00000ad0| 64 20 62 75 66 66 65 72 | 20 69 66 20 69 74 73 20 |d buffer| if its |
|00000ae0| 6e 6f 74 20 66 72 6f 6d | 20 6f 75 72 20 6e 65 77 |not from| our new|
|00000af0| 20 66 72 69 65 6e 64 20 | 2a 2f 0d 09 70 62 09 09 | friend |*/..pb..|
|00000b00| 09 09 09 09 09 09 09 09 | 3d 20 47 65 74 50 42 28 |........|= GetPB(|
|00000b10| 29 3b 0d 09 70 62 2d 3e | 69 6f 43 6f 6d 70 6c 65 |);..pb->|ioComple|
|00000b20| 74 69 6f 6e 09 09 09 09 | 09 3d 20 6e 69 6c 3b 0d |tion....|.= nil;.|
|00000b30| 09 70 62 2d 3e 63 73 43 | 6f 64 65 20 09 09 09 09 |.pb->csC|ode ....|
|00000b40| 09 09 09 3d 20 55 44 50 | 42 66 72 52 65 74 75 72 |...= UDP|BfrRetur|
|00000b50| 6e 3b 0d 09 70 62 2d 3e | 63 73 50 61 72 61 6d 2e |n;..pb->|csParam.|
|00000b60| 72 65 63 65 69 76 65 2e | 72 63 76 42 75 66 66 09 |receive.|rcvBuff.|
|00000b70| 3d 20 72 65 63 76 42 75 | 66 3b 0d 09 72 65 63 76 |= recvBu|f;..recv|
|00000b80| 42 75 66 09 09 09 09 09 | 09 09 09 3d 20 30 3b 0d |Buf.....|...= 0;.|
|00000b90| 09 72 65 63 76 64 20 20 | 20 09 09 09 09 09 09 09 |.recvd | .......|
|00000ba0| 09 3d 20 30 3b 0d 09 0d | 09 69 66 20 28 65 72 72 |.= 0;...|.if (err|
|00000bb0| 20 3d 20 50 42 43 6f 6e | 74 72 6f 6c 41 73 79 6e | = PBCon|trolAsyn|
|00000bc0| 63 28 50 61 72 6d 42 6c | 6b 50 74 72 28 70 62 29 |c(ParmBl|kPtr(pb)|
|00000bd0| 29 29 0d 09 09 72 65 74 | 75 72 6e 20 54 43 50 5f |))...ret|urn TCP_|
|00000be0| 65 72 72 6f 72 28 65 72 | 72 29 3b 0d 09 65 6c 73 |error(er|r);..els|
|00000bf0| 65 0d 09 09 72 65 74 75 | 72 6e 20 30 3b 0d 7d 0d |e...retu|rn 0;.}.|
|00000c00| 0d 69 6e 74 20 55 44 50 | 53 6f 63 6b 65 74 3a 3a |.int UDP|Socket::|
|00000c10| 52 65 61 64 41 68 65 61 | 64 28 29 0d 7b 0d 09 4f |ReadAhea|d().{..O|
|00000c20| 53 45 72 72 09 09 09 65 | 72 72 3b 0d 09 55 44 50 |SErr...e|rr;..UDP|
|00000c30| 69 6f 70 62 20 2a 09 70 | 62 3b 0d 0d 09 70 62 09 |iopb *.p|b;...pb.|
|00000c40| 09 09 09 09 09 09 09 09 | 09 09 09 3d 20 47 65 74 |........|...= Get|
|00000c50| 50 42 28 29 3b 0d 09 70 | 62 2d 3e 69 6f 43 6f 6d |PB();..p|b->ioCom|
|00000c60| 70 6c 65 74 69 6f 6e 09 | 09 09 09 09 09 09 3d 20 |pletion.|......= |
|00000c70| 55 44 50 49 4f 43 6f 6d | 70 6c 65 74 69 6f 6e 50 |UDPIOCom|pletionP|
|00000c80| 72 6f 63 28 75 64 70 5f | 72 65 61 64 5f 61 68 65 |roc(udp_|read_ahe|
|00000c90| 61 64 5f 64 6f 6e 65 29 | 3b 0d 09 70 62 2d 3e 63 |ad_done)|;..pb->c|
|00000ca0| 73 43 6f 64 65 20 09 09 | 09 09 09 09 09 09 09 3d |sCode ..|.......=|
|00000cb0| 20 55 44 50 52 65 61 64 | 3b 0d 09 70 62 2d 3e 63 | UDPRead|;..pb->c|
|00000cc0| 73 50 61 72 61 6d 2e 72 | 65 63 65 69 76 65 2e 74 |sParam.r|eceive.t|
|00000cd0| 69 6d 65 4f 75 74 09 09 | 09 3d 20 30 20 2f 2a 20 |imeOut..|.= 0 /* |
|00000ce0| 69 6e 66 69 6e 69 74 79 | 20 2a 2f 3b 0d 09 70 62 |infinity| */;..pb|
|00000cf0| 2d 3e 63 73 50 61 72 61 | 6d 2e 72 65 63 65 69 76 |->csPara|m.receiv|
|00000d00| 65 2e 73 65 63 6f 6e 64 | 54 69 6d 65 53 74 61 6d |e.second|TimeStam|
|00000d10| 70 09 3d 20 30 2f 2a 20 | 6d 75 73 74 20 62 65 20 |p.= 0/* |must be |
|00000d20| 7a 65 72 6f 20 2a 2f 3b | 0d 0d 09 69 66 20 28 65 |zero */;|...if (e|
|00000d30| 72 72 20 3d 20 50 42 43 | 6f 6e 74 72 6f 6c 41 73 |rr = PBC|ontrolAs|
|00000d40| 79 6e 63 28 50 61 72 6d | 42 6c 6b 50 74 72 28 70 |ync(Parm|BlkPtr(p|
|00000d50| 62 29 29 29 0d 09 09 72 | 65 74 75 72 6e 20 54 43 |b)))...r|eturn TC|
|00000d60| 50 5f 65 72 72 6f 72 28 | 65 72 72 29 3b 0d 09 65 |P_error(|err);..e|
|00000d70| 6c 73 65 0d 09 09 72 65 | 74 75 72 6e 20 30 3b 0d |lse...re|turn 0;.|
|00000d80| 7d 0d 0d 2f 2a 0d 20 2a | 09 73 5f 63 6f 6e 6e 65 |}../*. *|.s_conne|
|00000d90| 63 74 20 2d 20 69 6e 69 | 74 69 61 74 65 20 61 20 |ct - ini|tiate a |
|00000da0| 63 6f 6e 6e 65 63 74 69 | 6f 6e 20 6f 6e 20 61 20 |connecti|on on a |
|00000db0| 4d 61 63 54 43 50 20 73 | 6f 63 6b 65 74 0d 20 2a |MacTCP s|ocket. *|
|00000dc0| 0d 20 2a 09 09 54 68 69 | 73 20 20 63 61 6c 6c 20 |. *..Thi|s call |
|00000dd0| 73 70 65 63 69 66 69 65 | 73 20 74 68 65 20 61 64 |specifie|s the ad|
|00000de0| 64 72 65 73 73 20 74 6f | 20 20 77 68 69 63 68 20 |dress to| which |
|00000df0| 20 64 61 74 61 67 72 61 | 6d 73 0d 20 2a 09 09 61 | datagra|ms. *..a|
|00000e00| 72 65 20 20 74 6f 20 20 | 62 65 20 20 73 65 6e 74 |re to |be sent|
|00000e10| 2c 20 61 6e 64 20 74 68 | 65 20 6f 6e 6c 79 20 61 |, and th|e only a|
|00000e20| 64 64 72 65 73 73 20 66 | 72 6f 6d 20 77 68 69 63 |ddress f|rom whic|
|00000e30| 68 20 64 61 74 61 67 72 | 61 6d 73 0d 20 2a 09 09 |h datagr|ams. *..|
|00000e40| 61 72 65 20 74 6f 20 62 | 65 20 72 65 63 65 69 76 |are to b|e receiv|
|00000e50| 65 64 2e 20 20 0d 20 2a | 09 09 09 20 0d 20 2a 09 |ed. . *|... . *.|
|00000e60| 09 55 44 50 20 73 6f 63 | 6b 65 74 73 20 6d 61 79 |.UDP soc|kets may|
|00000e70| 20 75 73 65 20 63 6f 6e | 6e 65 63 74 28 29 20 6d | use con|nect() m|
|00000e80| 75 6c 74 69 70 6c 65 20 | 74 69 6d 65 73 20 74 6f |ultiple |times to|
|00000e90| 20 63 68 61 6e 67 65 0d | 20 2a 09 09 74 68 65 69 | change.| *..thei|
|00000ea0| 72 20 61 73 73 6f 63 69 | 61 74 69 6f 6e 2e 20 55 |r associ|ation. U|
|00000eb0| 44 50 20 73 6f 63 6b 65 | 74 73 20 6d 61 79 20 64 |DP socke|ts may d|
|00000ec0| 69 73 73 6f 6c 76 65 20 | 74 68 65 20 61 73 73 6f |issolve |the asso|
|00000ed0| 63 69 61 74 69 6f 6e 0d | 20 2a 09 09 62 79 20 63 |ciation.| *..by c|
|00000ee0| 6f 6e 6e 65 63 74 69 6e | 67 20 74 6f 20 61 6e 20 |onnectin|g to an |
|00000ef0| 69 6e 76 61 6c 69 64 20 | 61 64 64 72 65 73 73 2c |invalid |address,|
|00000f00| 20 73 75 63 68 20 61 73 | 20 61 20 6e 75 6c 6c 0d | such as| a null.|
|00000f10| 20 2a 09 09 61 64 64 72 | 65 73 73 2e 0d 20 2a 09 | *..addr|ess.. *.|
|00000f20| 09 0d 20 2a 09 09 49 66 | 20 74 68 65 20 63 6f 6e |.. *..If| the con|
|00000f30| 6e 65 63 74 69 6f 6e 20 | 6f 72 20 62 69 6e 64 69 |nection |or bindi|
|00000f40| 6e 67 20 73 75 63 63 65 | 65 64 73 2c 20 74 68 65 |ng succe|eds, the|
|00000f50| 6e 20 30 20 69 73 20 72 | 65 74 75 72 6e 65 64 2e |n 0 is r|eturned.|
|00000f60| 0d 20 2a 09 09 4f 74 68 | 65 72 77 69 73 65 20 61 |. *..Oth|erwise a|
|00000f70| 20 2d 31 20 69 73 20 72 | 65 74 75 72 6e 65 64 2c | -1 is r|eturned,|
|00000f80| 20 61 6e 64 20 61 20 6d | 6f 72 65 20 73 70 65 63 | and a m|ore spec|
|00000f90| 69 66 69 63 20 65 72 72 | 6f 72 20 63 6f 64 65 0d |ific err|or code.|
|00000fa0| 20 2a 09 09 69 73 20 73 | 74 6f 72 65 64 20 69 6e | *..is s|tored in|
|00000fb0| 20 65 72 72 6e 6f 2e 0d | 20 2a 09 09 0d 20 2a 09 | errno..| *... *.|
|00000fc0| 09 45 41 46 4e 4f 53 55 | 50 50 4f 52 54 20 20 20 |.EAFNOSU|PPORT |
|00000fd0| 20 20 20 20 20 54 68 65 | 20 61 64 64 72 65 73 73 | The| address|
|00000fe0| 20 66 61 6d 69 6c 79 20 | 69 6e 20 61 64 64 72 20 | family |in addr |
|00000ff0| 69 73 20 6e 6f 74 20 41 | 46 5f 49 4e 45 54 2e 0d |is not A|F_INET..|
|00001000| 20 2a 09 09 0d 20 2a 09 | 09 45 48 4f 53 54 55 4e | *... *.|.EHOSTUN|
|00001010| 52 45 41 43 48 20 20 20 | 20 20 20 20 20 54 68 65 |REACH | The|
|00001020| 20 54 43 50 20 63 6f 6e | 6e 65 63 74 69 6f 6e 20 | TCP con|nection |
|00001030| 63 61 6d 65 20 75 70 20 | 68 61 6c 66 2d 77 61 79 |came up |half-way|
|00001040| 20 61 6e 64 20 0d 20 2a | 20 20 20 20 20 20 20 20 | and . *| |
|00001050| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001060| 20 20 74 68 65 6e 20 66 | 61 69 6c 65 64 2e 0d 20 | then f|ailed.. |
|00001070| 2a 2f 0d 0d 69 6e 74 20 | 55 44 50 53 6f 63 6b 65 |*/..int |UDPSocke|
|00001080| 74 3a 3a 63 6f 6e 6e 65 | 63 74 28 76 6f 69 64 20 |t::conne|ct(void |
|00001090| 2a 20 61 64 64 72 65 73 | 73 2c 20 69 6e 74 20 61 |* addres|s, int a|
|000010a0| 64 64 72 6c 65 6e 29 0d | 7b 0d 09 73 74 72 75 63 |ddrlen).|{..struc|
|000010b0| 74 20 73 6f 63 6b 61 64 | 64 72 5f 69 6e 20 2a 09 |t sockad|dr_in *.|
|000010c0| 61 64 64 72 09 3d 20 28 | 73 74 72 75 63 74 20 73 |addr.= (|struct s|
|000010d0| 6f 63 6b 61 64 64 72 5f | 69 6e 20 2a 29 20 61 64 |ockaddr_|in *) ad|
|000010e0| 64 72 65 73 73 3b 0d 09 | 09 0d 09 69 66 20 28 61 |dress;..|...if (a|
|000010f0| 64 64 72 6c 65 6e 20 21 | 3d 20 73 69 7a 65 6f 66 |ddrlen !|= sizeof|
|00001100| 28 73 74 72 75 63 74 20 | 73 6f 63 6b 61 64 64 72 |(struct |sockaddr|
|00001110| 5f 69 6e 29 29 0d 09 09 | 72 65 74 75 72 6e 20 47 |_in))...|return G|
|00001120| 55 53 49 5f 65 72 72 6f | 72 28 45 49 4e 56 41 4c |USI_erro|r(EINVAL|
|00001130| 29 3b 0d 0d 09 69 66 20 | 28 61 64 64 72 2d 3e 73 |);...if |(addr->s|
|00001140| 69 6e 5f 66 61 6d 69 6c | 79 20 21 3d 20 41 46 5f |in_famil|y != AF_|
|00001150| 49 4e 45 54 29 0d 09 09 | 72 65 74 75 72 6e 20 47 |INET)...|return G|
|00001160| 55 53 49 5f 65 72 72 6f | 72 28 45 41 46 4e 4f 53 |USI_erro|r(EAFNOS|
|00001170| 55 50 50 4f 52 54 29 3b | 0d 09 0d 09 2f 2a 20 6d |UPPORT);|..../* m|
|00001180| 61 6b 65 20 74 68 65 20 | 73 74 72 65 61 6d 20 69 |ake the |stream i|
|00001190| 66 20 69 74 73 20 6e 6f | 74 20 6d 61 64 65 20 61 |f its no|t made a|
|000011a0| 6c 72 65 61 64 79 20 2a | 2f 0d 09 69 66 20 28 73 |lready *|/..if (s|
|000011b0| 73 74 61 74 65 20 3d 3d | 20 53 4f 43 4b 5f 53 54 |state ==| SOCK_ST|
|000011c0| 41 54 45 5f 4e 4f 5f 53 | 54 52 45 41 4d 29 20 7b |ATE_NO_S|TREAM) {|
|000011d0| 0d 09 09 69 66 20 28 4e | 65 77 53 74 72 65 61 6d |...if (N|ewStream|
|000011e0| 28 29 29 0d 09 09 09 72 | 65 74 75 72 6e 20 2d 31 |())....r|eturn -1|
|000011f0| 3b 0d 09 7d 20 65 6c 73 | 65 20 69 66 20 28 72 65 |;..} els|e if (re|
|00001200| 63 76 42 75 66 29 0d 09 | 09 69 66 20 28 46 6c 75 |cvBuf)..|.if (Flu|
|00001210| 73 68 52 65 61 64 41 68 | 65 61 64 28 29 29 0d 09 |shReadAh|ead())..|
|00001220| 09 09 72 65 74 75 72 6e | 20 2d 31 3b 0d 09 0d 09 |..return| -1;....|
|00001230| 2f 2a 20 72 65 63 6f 72 | 64 20 6f 75 72 20 70 65 |/* recor|d our pe|
|00001240| 65 72 20 2a 2f 0d 09 70 | 65 65 72 2e 73 69 6e 5f |er */..p|eer.sin_|
|00001250| 6c 65 6e 20 09 09 09 3d | 20 73 69 7a 65 6f 66 28 |len ...=| sizeof(|
|00001260| 73 74 72 75 63 74 20 73 | 6f 63 6b 61 64 64 72 5f |struct s|ockaddr_|
|00001270| 69 6e 29 3b 0d 09 70 65 | 65 72 2e 73 69 6e 5f 61 |in);..pe|er.sin_a|
|00001280| 64 64 72 2e 73 5f 61 64 | 64 72 09 3d 20 61 64 64 |ddr.s_ad|dr.= add|
|00001290| 72 2d 3e 73 69 6e 5f 61 | 64 64 72 2e 73 5f 61 64 |r->sin_a|ddr.s_ad|
|000012a0| 64 72 3b 0d 09 70 65 65 | 72 2e 73 69 6e 5f 70 6f |dr;..pee|r.sin_po|
|000012b0| 72 74 20 09 09 09 3d 20 | 61 64 64 72 2d 3e 73 69 |rt ...= |addr->si|
|000012c0| 6e 5f 70 6f 72 74 3b 0d | 09 70 65 65 72 2e 73 69 |n_port;.|.peer.si|
|000012d0| 6e 5f 66 61 6d 69 6c 79 | 20 09 09 3d 20 41 46 5f |n_family| ..= AF_|
|000012e0| 49 4e 45 54 3b 0d 09 73 | 73 74 61 74 65 20 09 09 |INET;..s|state ..|
|000012f0| 09 09 09 3d 20 53 4f 43 | 4b 5f 53 54 41 54 45 5f |...= SOC|K_STATE_|
|00001300| 43 4f 4e 4e 45 43 54 45 | 44 3b 0d 09 0d 09 72 65 |CONNECTE|D;....re|
|00001310| 74 75 72 6e 20 30 3b 0d | 7d 0d 0d 2f 2a 09 0d 20 |turn 0;.|}../*.. |
|00001320| 2a 09 55 44 50 53 6f 63 | 6b 65 74 3a 3a 72 65 63 |*.UDPSoc|ket::rec|
|00001330| 76 66 72 6f 6d 28 73 2c | 20 62 75 66 66 65 72 2c |vfrom(s,| buffer,|
|00001340| 20 62 75 66 6c 65 6e 2c | 20 66 6c 61 67 73 2c 20 | buflen,| flags, |
|00001350| 66 72 6f 6d 2c 20 66 72 | 6f 6d 6c 65 6e 29 0d 20 |from, fr|omlen). |
|00001360| 2a 09 09 0d 20 2a 09 09 | 72 65 63 76 28 29 20 61 |*... *..|recv() a|
|00001370| 6e 64 20 72 65 63 76 66 | 72 6f 6d 28 29 20 61 74 |nd recvf|rom() at|
|00001380| 74 65 6d 70 74 20 74 6f | 20 72 65 63 65 69 76 65 |tempt to| receive|
|00001390| 20 61 20 6d 65 73 73 61 | 67 65 20 28 69 65 20 61 | a messa|ge (ie a|
|000013a0| 20 64 61 74 61 67 72 61 | 6d 29 20 0d 20 2a 09 09 | datagra|m) . *..|
|000013b0| 6f 6e 20 74 68 65 20 73 | 6f 63 6b 65 74 20 73 2e |on the s|ocket s.|
|000013c0| 20 0d 20 2a 0d 20 2a 09 | 09 66 72 6f 6d 20 72 65 | . *. *.|.from re|
|000013d0| 74 75 72 6e 73 20 74 68 | 65 20 61 64 64 72 65 73 |turns th|e addres|
|000013e0| 73 20 6f 66 20 74 68 65 | 20 73 6f 63 6b 65 74 20 |s of the| socket |
|000013f0| 77 68 69 63 68 20 73 65 | 6e 74 20 74 68 65 20 6d |which se|nt the m|
|00001400| 65 73 73 61 67 65 2e 0d | 20 2a 09 09 66 72 6f 6d |essage..| *..from|
|00001410| 6c 65 6e 20 69 73 20 74 | 68 65 20 75 73 75 61 6c |len is t|he usual|
|00001420| 20 76 61 6c 75 65 2d 72 | 65 73 75 6c 74 20 6c 65 | value-r|esult le|
|00001430| 6e 67 74 68 20 70 61 72 | 61 6d 65 74 65 72 2e 20 |ngth par|ameter. |
|00001440| 0d 20 2a 09 09 0d 20 2a | 09 09 54 79 70 69 63 61 |. *... *|..Typica|
|00001450| 6c 6c 79 2c 20 72 65 61 | 64 28 29 20 69 73 20 75 |lly, rea|d() is u|
|00001460| 73 65 64 20 77 69 74 68 | 20 61 20 54 43 50 20 73 |sed with| a TCP s|
|00001470| 74 72 65 61 6d 20 61 6e | 64 20 72 65 63 76 28 29 |tream an|d recv()|
|00001480| 20 77 69 74 68 0d 20 2a | 09 09 55 44 50 20 77 68 | with. *|..UDP wh|
|00001490| 65 72 65 20 74 68 65 20 | 69 64 65 61 20 6f 66 20 |ere the |idea of |
|000014a0| 61 20 6d 65 73 73 61 67 | 65 20 6d 61 6b 65 73 20 |a messag|e makes |
|000014b0| 6d 6f 72 65 20 73 65 6e | 73 65 2e 20 42 75 74 20 |more sen|se. But |
|000014c0| 69 6e 20 66 61 63 74 2c | 0d 20 2a 09 09 72 65 61 |in fact,|. *..rea|
|000014d0| 64 28 29 20 61 6e 64 20 | 72 65 63 76 28 29 20 61 |d() and |recv() a|
|000014e0| 72 65 20 65 71 75 69 76 | 61 6c 65 6e 74 2e 0d 20 |re equiv|alent.. |
|000014f0| 2a 09 09 0d 20 2a 09 09 | 49 66 20 61 20 6d 65 73 |*... *..|If a mes|
|00001500| 73 61 67 65 20 28 69 65 | 2e 20 64 61 74 61 67 72 |sage (ie|. datagr|
|00001510| 61 6d 29 20 69 73 20 74 | 6f 6f 20 6c 6f 6e 67 20 |am) is t|oo long |
|00001520| 74 6f 20 66 69 74 20 69 | 6e 20 74 68 65 20 73 75 |to fit i|n the su|
|00001530| 70 70 6c 69 65 64 20 0d | 20 2a 09 09 62 75 66 66 |pplied .| *..buff|
|00001540| 65 72 2c 20 65 78 63 65 | 73 73 20 62 79 74 65 73 |er, exce|ss bytes|
|00001550| 20 77 69 6c 6c 20 62 65 | 20 64 69 73 63 61 72 64 | will be| discard|
|00001560| 65 64 2e 2e 0d 20 2a 0d | 20 2a 09 09 49 66 20 6e |ed... *.| *..If n|
|00001570| 6f 20 6d 65 73 73 61 67 | 65 73 20 61 72 65 20 61 |o messag|es are a|
|00001580| 76 61 69 6c 61 62 6c 65 | 20 61 74 20 74 68 65 20 |vailable| at the |
|00001590| 73 6f 63 6b 65 74 2c 20 | 74 68 65 20 72 65 63 65 |socket, |the rece|
|000015a0| 69 76 65 20 63 61 6c 6c | 0d 20 2a 09 09 77 61 69 |ive call|. *..wai|
|000015b0| 74 73 20 66 6f 72 20 61 | 20 6d 65 73 73 61 67 65 |ts for a| message|
|000015c0| 20 74 6f 20 61 72 72 69 | 76 65 2c 20 75 6e 6c 65 | to arri|ve, unle|
|000015d0| 73 73 20 74 68 65 20 73 | 6f 63 6b 65 74 20 69 73 |ss the s|ocket is|
|000015e0| 20 6e 6f 6e 2d 0d 20 2a | 09 09 62 6c 6f 63 6b 69 | non-. *|..blocki|
|000015f0| 6e 67 20 69 6e 20 77 68 | 69 63 68 20 63 61 73 65 |ng in wh|ich case|
|00001600| 20 2d 31 20 69 73 20 72 | 65 74 75 72 6e 65 64 20 | -1 is r|eturned |
|00001610| 77 69 74 68 20 65 72 72 | 6e 6f 20 73 65 74 20 74 |with err|no set t|
|00001620| 6f 20 0d 20 2a 09 09 45 | 57 4f 55 4c 44 42 4c 4f |o . *..E|WOULDBLO|
|00001630| 43 4b 2e 0d 20 2a 0d 20 | 2a 09 09 46 6c 61 67 73 |CK.. *. |*..Flags|
|00001640| 20 69 73 20 69 67 6e 6f | 72 65 64 2e 0d 20 2a 09 | is igno|red.. *.|
|00001650| 09 0d 20 2a 09 09 49 66 | 20 73 75 63 63 65 73 73 |.. *..If| success|
|00001660| 66 75 6c 2c 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |ful, the| number |
|00001670| 6f 66 20 62 79 74 65 73 | 20 61 63 74 75 61 6c 6c |of bytes| actuall|
|00001680| 79 20 72 65 63 65 69 76 | 65 64 20 69 73 0d 20 2a |y receiv|ed is. *|
|00001690| 09 09 72 65 74 75 72 6e | 65 64 2e 20 4f 74 68 65 |..return|ed. Othe|
|000016a0| 72 77 69 73 65 2c 20 61 | 20 2d 31 20 69 73 20 72 |rwise, a| -1 is r|
|000016b0| 65 74 75 72 6e 65 64 20 | 61 6e 64 20 74 68 65 20 |eturned |and the |
|000016c0| 67 6c 6f 62 61 6c 20 76 | 61 72 69 61 62 6c 65 0d |global v|ariable.|
|000016d0| 20 2a 09 09 65 72 72 6e | 6f 20 69 73 20 73 65 74 | *..errn|o is set|
|000016e0| 20 74 6f 20 69 6e 64 69 | 63 61 74 65 20 74 68 65 | to indi|cate the|
|000016f0| 20 65 72 72 6f 72 2e 20 | 0d 20 2a 09 09 0d 20 2a | error. |. *... *|
|00001700| 09 09 45 53 48 55 54 44 | 4f 57 4e 20 20 20 20 54 |..ESHUTD|OWN T|
|00001710| 68 65 20 73 6f 63 6b 65 | 74 20 68 61 73 20 62 65 |he socke|t has be|
|00001720| 65 6e 20 73 68 75 74 64 | 6f 77 6e 20 66 6f 72 20 |en shutd|own for |
|00001730| 72 65 63 65 69 76 65 20 | 6f 70 65 72 61 74 69 6f |receive |operatio|
|00001740| 6e 73 2e 0d 20 2a 2f 0d | 0d 69 6e 74 20 55 44 50 |ns.. */.|.int UDP|
|00001750| 53 6f 63 6b 65 74 3a 3a | 72 65 63 76 66 72 6f 6d |Socket::|recvfrom|
|00001760| 28 76 6f 69 64 20 2a 20 | 62 75 66 66 65 72 2c 20 |(void * |buffer, |
|00001770| 69 6e 74 20 62 75 66 6c | 65 6e 2c 20 69 6e 74 2c |int bufl|en, int,|
|00001780| 20 76 6f 69 64 20 2a 20 | 66 72 6f 6d 2c 20 69 6e | void * |from, in|
|00001790| 74 20 2a 20 66 72 6f 6d | 6c 65 6e 29 0d 7b 0d 09 |t * from|len).{..|
|000017a0| 2f 2a 20 6d 61 6b 65 20 | 74 68 65 20 73 74 72 65 |/* make |the stre|
|000017b0| 61 6d 20 69 66 20 69 74 | 73 20 6e 6f 74 20 6d 61 |am if it|s not ma|
|000017c0| 64 65 20 61 6c 72 65 61 | 64 79 20 2a 2f 0d 09 69 |de alrea|dy */..i|
|000017d0| 66 20 28 73 73 74 61 74 | 65 20 3d 3d 20 53 4f 43 |f (sstat|e == SOC|
|000017e0| 4b 5f 53 54 41 54 45 5f | 4e 4f 5f 53 54 52 45 41 |K_STATE_|NO_STREA|
|000017f0| 4d 29 0d 09 09 69 66 20 | 28 4e 65 77 53 74 72 65 |M)...if |(NewStre|
|00001800| 61 6d 28 29 29 0d 09 09 | 09 72 65 74 75 72 6e 20 |am())...|.return |
|00001810| 2d 31 3b 0d 09 09 09 0d | 09 2f 2a 20 64 6f 6e 74 |-1;.....|./* dont|
|00001820| 20 62 6c 6f 63 6b 20 61 | 20 6e 6f 6e 2d 62 6c 6f | block a| non-blo|
|00001830| 63 6b 69 6e 67 20 73 6f | 63 6b 65 74 20 2a 2f 0d |cking so|cket */.|
|00001840| 09 69 66 20 28 6e 6f 6e | 62 6c 6f 63 6b 69 6e 67 |.if (non|blocking|
|00001850| 20 26 26 20 61 73 79 6e | 63 65 72 72 20 3d 3d 20 | && asyn|cerr == |
|00001860| 31 29 0d 09 09 72 65 74 | 75 72 6e 20 47 55 53 49 |1)...ret|urn GUSI|
|00001870| 5f 65 72 72 6f 72 28 45 | 57 4f 55 4c 44 42 4c 4f |_error(E|WOULDBLO|
|00001880| 43 4b 29 3b 0d 09 0d 09 | 53 50 49 4e 28 61 73 79 |CK);....|SPIN(asy|
|00001890| 6e 63 65 72 72 20 3d 3d | 20 31 2c 20 53 50 5f 44 |ncerr ==| 1, SP_D|
|000018a0| 47 52 41 4d 5f 52 45 41 | 44 2c 30 29 3b 0d 0d 09 |GRAM_REA|D,0);...|
|000018b0| 69 66 20 28 61 73 79 6e | 63 65 72 72 21 3d 6e 6f |if (asyn|cerr!=no|
|000018c0| 45 72 72 29 0d 09 09 72 | 65 74 75 72 6e 20 54 43 |Err)...r|eturn TC|
|000018d0| 50 5f 65 72 72 6f 72 28 | 61 73 79 6e 63 65 72 72 |P_error(|asyncerr|
|000018e0| 29 3b 0d 0d 09 2f 2a 20 | 72 65 74 75 72 6e 20 74 |);.../* |return t|
|000018f0| 68 65 20 64 61 74 61 20 | 74 6f 20 74 68 65 20 75 |he data |to the u|
|00001900| 73 65 72 20 2d 20 74 72 | 75 6e 63 61 74 65 20 74 |ser - tr|uncate t|
|00001910| 68 65 20 70 61 63 6b 65 | 74 20 69 66 20 6e 65 63 |he packe|t if nec|
|00001920| 65 73 73 61 72 79 20 2a | 2f 0d 09 62 75 66 6c 65 |essary *|/..bufle|
|00001930| 6e 20 3d 20 6d 69 6e 28 | 62 75 66 6c 65 6e 2c 72 |n = min(|buflen,r|
|00001940| 65 63 76 64 29 3b 09 0d | 09 42 6c 6f 63 6b 4d 6f |ecvd);..|.BlockMo|
|00001950| 76 65 28 72 65 63 76 42 | 75 66 2c 20 62 75 66 66 |ve(recvB|uf, buff|
|00001960| 65 72 2c 20 62 75 66 6c | 65 6e 29 3b 0d 0d 09 69 |er, bufl|en);...i|
|00001970| 66 20 28 66 72 6f 6d 20 | 26 26 20 2a 66 72 6f 6d |f (from |&& *from|
|00001980| 6c 65 6e 20 3e 3d 20 73 | 69 7a 65 6f 66 28 73 74 |len >= s|izeof(st|
|00001990| 72 75 63 74 20 73 6f 63 | 6b 61 64 64 72 5f 69 6e |ruct soc|kaddr_in|
|000019a0| 29 29 20 7b 0d 09 09 2a | 28 73 74 72 75 63 74 20 |)) {...*|(struct |
|000019b0| 73 6f 63 6b 61 64 64 72 | 5f 69 6e 20 2a 29 20 66 |sockaddr|_in *) f|
|000019c0| 72 6f 6d 20 3d 20 70 65 | 65 72 3b 0d 09 09 2a 66 |rom = pe|er;...*f|
|000019d0| 72 6f 6d 6c 65 6e 20 3d | 20 73 69 7a 65 6f 66 20 |romlen =| sizeof |
|000019e0| 28 73 74 72 75 63 74 20 | 73 6f 63 6b 61 64 64 72 |(struct |sockaddr|
|000019f0| 5f 69 6e 29 3b 0d 09 7d | 09 0d 09 0d 09 2f 2a 20 |_in);..}|...../* |
|00001a00| 63 6f 6e 74 69 6e 75 65 | 20 74 68 65 20 72 65 61 |continue| the rea|
|00001a10| 64 2d 61 68 65 61 64 20 | 2d 20 65 72 72 6f 72 73 |d-ahead |- errors|
|00001a20| 20 77 68 69 63 68 20 6f | 63 63 75 72 20 2a 2f 0d | which o|ccur */.|
|00001a30| 09 2f 2a 20 68 65 72 65 | 20 77 69 6c 6c 20 73 68 |./* here| will sh|
|00001a40| 6f 77 20 75 70 20 6e 65 | 78 74 20 74 69 6d 65 20 |ow up ne|xt time |
|00001a50| 61 72 6f 75 6e 64 20 2a | 2f 0d 09 0d 09 46 6c 75 |around *|/....Flu|
|00001a60| 73 68 52 65 61 64 41 68 | 65 61 64 28 29 3b 0d 09 |shReadAh|ead();..|
|00001a70| 52 65 61 64 41 68 65 61 | 64 28 29 3b 0d 09 0d 09 |ReadAhea|d();....|
|00001a80| 72 65 74 75 72 6e 20 62 | 75 66 6c 65 6e 3b 0d 7d |return b|uflen;.}|
|00001a90| 0d 0d 2f 2a 0d 20 2a 09 | 54 43 50 53 6f 63 6b 65 |../*. *.|TCPSocke|
|00001aa0| 74 3a 3a 73 65 6e 64 74 | 6f 28 73 2c 20 62 75 66 |t::sendt|o(s, buf|
|00001ab0| 66 65 72 2c 20 62 75 66 | 6c 65 6e 2c 20 66 6c 61 |fer, buf|len, fla|
|00001ac0| 67 73 2c 20 74 6f 2c 20 | 74 6f 6c 65 6e 29 0d 20 |gs, to, |tolen). |
|00001ad0| 2a 09 09 73 65 6e 64 74 | 6f 28 29 20 69 73 20 75 |*..sendt|o() is u|
|00001ae0| 73 65 64 20 74 6f 20 74 | 72 61 6e 73 6d 69 74 20 |sed to t|ransmit |
|00001af0| 61 20 6d 65 73 73 61 67 | 65 20 74 6f 20 61 6e 6f |a messag|e to ano|
|00001b00| 74 68 65 72 20 0d 20 2a | 09 09 73 6f 63 6b 65 74 |ther . *|..socket|
|00001b10| 20 6f 6e 20 74 68 65 20 | 73 6f 63 6b 65 74 20 73 | on the |socket s|
|00001b20| 2e 0d 20 2a 0d 20 2a 09 | 09 54 79 70 69 63 61 6c |.. *. *.|.Typical|
|00001b30| 6c 79 2c 20 77 72 69 74 | 65 28 29 20 69 73 20 75 |ly, writ|e() is u|
|00001b40| 73 65 64 20 77 69 74 68 | 20 61 20 54 43 50 20 73 |sed with| a TCP s|
|00001b50| 74 72 65 61 6d 20 61 6e | 64 20 73 65 6e 64 28 29 |tream an|d send()|
|00001b60| 20 77 69 74 68 0d 20 2a | 09 09 55 44 50 20 77 68 | with. *|..UDP wh|
|00001b70| 65 72 65 20 74 68 65 20 | 69 64 65 61 20 6f 66 20 |ere the |idea of |
|00001b80| 61 20 6d 65 73 73 61 67 | 65 20 6d 61 6b 65 73 20 |a messag|e makes |
|00001b90| 6d 6f 72 65 20 73 65 6e | 73 65 2e 20 42 75 74 20 |more sen|se. But |
|00001ba0| 69 6e 20 66 61 63 74 2c | 0d 20 2a 09 09 77 72 69 |in fact,|. *..wri|
|00001bb0| 74 65 28 29 20 61 6e 64 | 20 73 65 6e 64 28 29 20 |te() and| send() |
|00001bc0| 61 72 65 20 65 71 75 69 | 76 61 6c 65 6e 74 2e 0d |are equi|valent..|
|00001bd0| 20 2a 0d 20 2a 20 20 20 | 20 57 72 69 74 65 28 29 | *. * | Write()|
|00001be0| 20 61 6e 64 20 73 65 6e | 64 28 29 20 6f 70 65 72 | and sen|d() oper|
|00001bf0| 61 74 69 6f 6e 73 20 61 | 72 65 20 63 6f 6d 70 6c |ations a|re compl|
|00001c00| 65 74 65 64 20 61 73 20 | 73 6f 6f 6e 20 61 73 20 |eted as |soon as |
|00001c10| 74 68 65 0d 20 2a 20 20 | 20 20 64 61 74 61 20 69 |the. * | data i|
|00001c20| 73 20 70 6c 61 63 65 64 | 20 6f 6e 20 74 68 65 20 |s placed| on the |
|00001c30| 74 72 61 6e 73 6d 69 73 | 73 69 6f 6e 20 71 75 65 |transmis|sion que|
|00001c40| 75 65 2e 0d 20 2a 0d 20 | 2a 09 09 54 68 65 20 61 |ue.. *. |*..The a|
|00001c50| 64 64 72 65 73 73 20 6f | 66 20 74 68 65 20 74 61 |ddress o|f the ta|
|00001c60| 72 67 65 74 20 69 73 20 | 67 69 76 65 6e 20 62 79 |rget is |given by|
|00001c70| 20 74 6f 2e 0d 20 2a 0d | 20 2a 09 09 54 68 65 20 | to.. *.| *..The |
|00001c80| 6d 65 73 73 61 67 65 20 | 6d 75 73 74 20 62 65 20 |message |must be |
|00001c90| 73 68 6f 72 74 20 65 6e | 6f 75 67 68 20 74 6f 20 |short en|ough to |
|00001ca0| 66 69 74 20 69 6e 74 6f | 20 6f 6e 65 20 64 61 74 |fit into| one dat|
|00001cb0| 61 67 72 61 6d 2e 0d 20 | 2a 09 09 0d 20 2a 09 09 |agram.. |*... *..|
|00001cc0| 42 75 66 66 65 72 20 73 | 70 61 63 65 20 6d 75 73 |Buffer s|pace mus|
|00001cd0| 74 20 62 65 20 61 76 61 | 69 6c 61 62 6c 65 20 74 |t be ava|ilable t|
|00001ce0| 6f 20 68 6f 6c 64 20 74 | 68 65 20 6d 65 73 73 61 |o hold t|he messa|
|00001cf0| 67 65 20 74 6f 20 62 65 | 20 0d 20 2a 09 09 74 72 |ge to be| . *..tr|
|00001d00| 61 6e 73 6d 69 74 74 65 | 64 2c 20 72 65 67 61 72 |ansmitte|d, regar|
|00001d10| 64 6c 65 73 73 20 6f 66 | 20 69 74 73 20 6e 6f 6e |dless of| its non|
|00001d20| 2d 62 6c 6f 63 6b 69 6e | 67 20 49 2f 4f 20 73 74 |-blockin|g I/O st|
|00001d30| 61 74 65 2e 0d 20 2a 0d | 20 2a 09 09 46 6c 61 67 |ate.. *.| *..Flag|
|00001d40| 73 20 69 73 20 69 67 6e | 6f 72 65 64 2e 0d 20 2a |s is ign|ored.. *|
|00001d50| 09 09 0d 20 2a 09 09 54 | 68 65 73 65 20 63 61 6c |... *..T|hese cal|
|00001d60| 6c 73 20 72 65 74 75 72 | 6e 20 74 68 65 20 6e 75 |ls retur|n the nu|
|00001d70| 6d 62 65 72 20 6f 66 20 | 62 79 74 65 73 20 73 65 |mber of |bytes se|
|00001d80| 6e 74 2c 20 6f 72 20 2d | 31 20 69 66 20 61 6e 20 |nt, or -|1 if an |
|00001d90| 65 72 72 6f 72 20 0d 20 | 2a 09 09 6f 63 63 75 72 |error . |*..occur|
|00001da0| 72 65 64 2e 0d 20 2a 09 | 09 0d 20 2a 09 09 45 49 |red.. *.|.. *..EI|
|00001db0| 4e 56 41 4c 20 20 20 20 | 20 20 20 20 20 20 20 54 |NVAL | T|
|00001dc0| 68 65 20 73 75 6d 20 6f | 66 20 74 68 65 20 69 6f |he sum o|f the io|
|00001dd0| 76 5f 6c 65 6e 20 76 61 | 6c 75 65 73 20 69 6e 20 |v_len va|lues in |
|00001de0| 74 68 65 20 69 6f 76 20 | 61 72 72 61 79 20 77 61 |the iov |array wa|
|00001df0| 73 0d 20 2a 09 09 09 09 | 09 09 20 67 72 65 61 74 |s. *....|.. great|
|00001e00| 65 72 20 74 68 61 6e 20 | 36 35 35 33 35 20 28 54 |er than |65535 (T|
|00001e10| 43 50 29 20 6f 72 20 36 | 35 35 30 37 20 28 55 44 |CP) or 6|5507 (UD|
|00001e20| 50 29 20 6f 72 20 74 68 | 65 72 65 0d 20 2a 20 20 |P) or th|ere. * |
|00001e30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001e40| 20 20 20 20 20 77 65 72 | 65 20 74 6f 6f 20 6d 61 | wer|e too ma|
|00001e50| 6e 79 20 65 6e 74 72 69 | 65 73 20 69 6e 20 74 68 |ny entri|es in th|
|00001e60| 65 20 61 72 72 61 79 20 | 28 31 36 20 66 6f 72 20 |e array |(16 for |
|00001e70| 54 43 50 20 6f 72 0d 20 | 2a 20 20 20 20 20 20 20 |TCP or. |* |
|00001e80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001e90| 36 20 66 6f 72 20 55 44 | 50 29 2e 0d 20 2a 0d 20 |6 for UD|P).. *. |
|00001ea0| 2a 09 09 45 53 48 55 54 | 44 4f 57 4e 20 20 20 20 |*..ESHUT|DOWN |
|00001eb0| 20 20 20 20 54 68 65 20 | 73 6f 63 6b 65 74 20 68 | The |socket h|
|00001ec0| 61 73 20 62 65 65 6e 20 | 73 68 75 74 64 6f 77 6e |as been |shutdown|
|00001ed0| 20 66 6f 72 20 73 65 6e | 64 20 6f 70 65 72 61 74 | for sen|d operat|
|00001ee0| 69 6f 6e 73 2e 0d 20 2a | 09 09 0d 20 2a 09 09 45 |ions.. *|... *..E|
|00001ef0| 4d 53 47 53 49 5a 45 20 | 20 20 20 20 20 20 20 20 |MSGSIZE | |
|00001f00| 54 68 65 20 6d 65 73 73 | 61 67 65 20 69 73 20 74 |The mess|age is t|
|00001f10| 6f 6f 20 62 69 67 20 74 | 6f 20 73 65 6e 64 20 69 |oo big t|o send i|
|00001f20| 6e 20 6f 6e 65 20 64 61 | 74 61 67 72 61 6d 2e 20 |n one da|tagram. |
|00001f30| 28 55 44 50 29 0d 20 2a | 0d 20 2a 09 09 45 4e 4f |(UDP). *|. *..ENO|
|00001f40| 42 55 46 53 20 20 20 20 | 20 20 20 20 20 20 54 68 |BUFS | Th|
|00001f50| 65 20 74 72 61 6e 73 6d | 69 74 20 71 75 65 75 65 |e transm|it queue|
|00001f60| 20 69 73 20 66 75 6c 6c | 2e 20 28 55 44 50 29 0d | is full|. (UDP).|
|00001f70| 20 2a 2f 0d 0d 69 6e 74 | 20 55 44 50 53 6f 63 6b | */..int| UDPSock|
|00001f80| 65 74 3a 3a 73 65 6e 64 | 74 6f 28 76 6f 69 64 20 |et::send|to(void |
|00001f90| 2a 20 62 75 66 66 65 72 | 2c 20 69 6e 74 20 63 6f |* buffer|, int co|
|00001fa0| 75 6e 74 2c 20 69 6e 74 | 2c 20 76 6f 69 64 20 2a |unt, int|, void *|
|00001fb0| 20 74 6f 2c 20 69 6e 74 | 29 0d 7b 0d 09 6d 69 6e | to, int|).{..min|
|00001fc0| 69 77 64 73 20 20 09 61 | 77 64 73 3b 0d 09 4f 53 |iwds .a|wds;..OS|
|00001fd0| 45 72 72 20 20 20 20 09 | 65 72 72 3b 0d 09 55 44 |Err .|err;..UD|
|00001fe0| 50 69 6f 70 62 20 2a 09 | 70 62 3b 0d 0d 09 2f 2a |Piopb *.|pb;.../*|
|00001ff0| 20 6d 61 6b 65 20 74 68 | 65 20 73 74 72 65 61 6d | make th|e stream|
|00002000| 20 69 66 20 69 74 73 20 | 6e 6f 74 20 6d 61 64 65 | if its |not made|
|00002010| 20 61 6c 72 65 61 64 79 | 20 2a 2f 0d 09 69 66 20 | already| */..if |
|00002020| 28 73 73 74 61 74 65 20 | 3d 3d 20 53 4f 43 4b 5f |(sstate |== SOCK_|
|00002030| 53 54 41 54 45 5f 4e 4f | 5f 53 54 52 45 41 4d 29 |STATE_NO|_STREAM)|
|00002040| 0d 09 09 69 66 20 28 4e | 65 77 53 74 72 65 61 6d |...if (N|ewStream|
|00002050| 28 29 29 0d 09 09 09 72 | 65 74 75 72 6e 20 2d 31 |())....r|eturn -1|
|00002060| 3b 0d 09 0d 09 69 66 20 | 28 63 6f 75 6e 74 20 3e |;....if |(count >|
|00002070| 20 55 44 50 5f 4d 41 58 | 5f 4d 53 47 29 0d 09 09 | UDP_MAX|_MSG)...|
|00002080| 72 65 74 75 72 6e 20 47 | 55 53 49 5f 65 72 72 6f |return G|USI_erro|
|00002090| 72 28 45 4d 53 47 53 49 | 5a 45 29 3b 0d 09 09 0d |r(EMSGSI|ZE);....|
|000020a0| 09 61 77 64 73 2e 74 65 | 72 6d 69 6e 75 73 20 3d |.awds.te|rminus =|
|000020b0| 20 30 3b 0d 09 61 77 64 | 73 2e 6c 65 6e 67 74 68 | 0;..awd|s.length|
|000020c0| 20 3d 20 63 6f 75 6e 74 | 3b 0d 09 61 77 64 73 2e | = count|;..awds.|
|000020d0| 70 74 72 20 3d 20 28 63 | 68 61 72 20 2a 29 20 62 |ptr = (c|har *) b|
|000020e0| 75 66 66 65 72 3b 0d 09 | 0d 09 2f 2f 20 69 66 20 |uffer;..|..// if |
|000020f0| 6e 6f 20 61 64 64 72 65 | 73 73 20 70 61 73 73 65 |no addre|ss passe|
|00002100| 64 2c 20 68 6f 70 65 20 | 77 65 20 68 61 76 65 20 |d, hope |we have |
|00002110| 6f 6e 65 20 61 6c 72 65 | 61 64 79 20 69 6e 20 70 |one alre|ady in p|
|00002120| 65 65 72 20 66 69 65 6c | 64 0d 09 69 66 20 28 74 |eer fiel|d..if (t|
|00002130| 6f 20 3d 3d 20 4e 55 4c | 4c 29 0d 09 09 69 66 20 |o == NUL|L)...if |
|00002140| 28 70 65 65 72 2e 73 69 | 6e 5f 6c 65 6e 29 0d 09 |(peer.si|n_len)..|
|00002150| 09 09 74 6f 20 3d 20 26 | 70 65 65 72 3b 0d 09 09 |..to = &|peer;...|
|00002160| 65 6c 73 65 0d 09 09 09 | 72 65 74 75 72 6e 20 47 |else....|return G|
|00002170| 55 53 49 5f 65 72 72 6f | 72 28 45 48 4f 53 54 55 |USI_erro|r(EHOSTU|
|00002180| 4e 52 45 41 43 48 29 3b | 0d 09 0d 09 70 62 09 09 |NREACH);|....pb..|
|00002190| 09 09 09 09 09 09 09 09 | 3d 20 47 65 74 50 42 28 |........|= GetPB(|
|000021a0| 29 3b 0d 09 70 62 2d 3e | 69 6f 43 6f 6d 70 6c 65 |);..pb->|ioComple|
|000021b0| 74 69 6f 6e 09 09 09 09 | 09 3d 20 55 44 50 49 4f |tion....|.= UDPIO|
|000021c0| 43 6f 6d 70 6c 65 74 69 | 6f 6e 50 72 6f 63 28 75 |Completi|onProc(u|
|000021d0| 64 70 5f 73 65 6e 64 5f | 64 6f 6e 65 29 3b 0d 09 |dp_send_|done);..|
|000021e0| 70 62 2d 3e 63 73 43 6f | 64 65 20 09 09 09 09 09 |pb->csCo|de .....|
|000021f0| 09 09 3d 20 55 44 50 57 | 72 69 74 65 3b 0d 09 70 |..= UDPW|rite;..p|
|00002200| 62 2d 3e 63 73 50 61 72 | 61 6d 2e 73 65 6e 64 2e |b->csPar|am.send.|
|00002210| 72 65 6d 6f 74 65 48 6f | 73 74 20 09 3d 20 28 28 |remoteHo|st .= ((|
|00002220| 73 74 72 75 63 74 20 73 | 6f 63 6b 61 64 64 72 5f |struct s|ockaddr_|
|00002230| 69 6e 20 2a 29 74 6f 29 | 2d 3e 73 69 6e 5f 61 64 |in *)to)|->sin_ad|
|00002240| 64 72 2e 73 5f 61 64 64 | 72 3b 0d 09 70 62 2d 3e |dr.s_add|r;..pb->|
|00002250| 63 73 50 61 72 61 6d 2e | 73 65 6e 64 2e 72 65 6d |csParam.|send.rem|
|00002260| 6f 74 65 50 6f 72 74 20 | 09 3d 20 28 28 73 74 72 |otePort |.= ((str|
|00002270| 75 63 74 20 73 6f 63 6b | 61 64 64 72 5f 69 6e 20 |uct sock|addr_in |
|00002280| 2a 29 74 6f 29 2d 3e 73 | 69 6e 5f 70 6f 72 74 3b |*)to)->s|in_port;|
|00002290| 0d 09 70 62 2d 3e 63 73 | 50 61 72 61 6d 2e 73 65 |..pb->cs|Param.se|
|000022a0| 6e 64 2e 77 64 73 50 74 | 72 20 09 09 3d 20 28 50 |nd.wdsPt|r ..= (P|
|000022b0| 74 72 29 26 61 77 64 73 | 3b 0d 09 70 62 2d 3e 63 |tr)&awds|;..pb->c|
|000022c0| 73 50 61 72 61 6d 2e 73 | 65 6e 64 2e 63 68 65 63 |sParam.s|end.chec|
|000022d0| 6b 53 75 6d 20 09 09 3d | 20 74 72 75 65 3b 0d 09 |kSum ..=| true;..|
|000022e0| 70 62 2d 3e 63 73 50 61 | 72 61 6d 2e 73 65 6e 64 |pb->csPa|ram.send|
|000022f0| 2e 73 65 6e 64 4c 65 6e | 67 74 68 20 09 3d 20 30 |.sendLen|gth .= 0|
|00002300| 2f 2a 20 6d 75 73 74 20 | 62 65 20 7a 65 72 6f 20 |/* must |be zero |
|00002310| 2a 2f 3b 0d 09 0d 09 69 | 66 20 28 65 72 72 20 3d |*/;....i|f (err =|
|00002320| 20 50 42 43 6f 6e 74 72 | 6f 6c 41 73 79 6e 63 28 | PBContr|olAsync(|
|00002330| 50 61 72 6d 42 6c 6b 50 | 74 72 28 70 62 29 29 29 |ParmBlkP|tr(pb)))|
|00002340| 0d 09 09 72 65 74 75 72 | 6e 20 54 43 50 5f 65 72 |...retur|n TCP_er|
|00002350| 72 6f 72 28 65 72 72 29 | 3b 0d 09 0d 09 2f 2f 20 |ror(err)|;....// |
|00002360| 67 65 74 20 73 6e 65 61 | 6b 79 2e 20 63 6f 6d 70 |get snea|ky. comp|
|00002370| 6c 2e 20 70 72 6f 63 20 | 73 65 74 73 20 70 74 72 |l. proc |sets ptr|
|00002380| 20 74 6f 20 6e 69 6c 20 | 6f 6e 20 63 6f 6d 70 6c | to nil |on compl|
|00002390| 65 74 69 6f 6e 2c 20 61 | 6e 64 20 70 75 74 73 20 |etion, a|nd puts |
|000023a0| 72 65 73 75 6c 74 20 63 | 6f 64 65 20 69 6e 0d 09 |result c|ode in..|
|000023b0| 2f 2f 20 74 65 72 6d 69 | 6e 75 73 20 66 69 65 6c |// termi|nus fiel|
|000023c0| 64 2e 0d 09 0d 09 53 50 | 49 4e 28 61 77 64 73 2e |d.....SP|IN(awds.|
|000023d0| 70 74 72 20 21 3d 20 4e | 55 4c 4c 2c 20 53 50 5f |ptr != N|ULL, SP_|
|000023e0| 44 47 52 41 4d 5f 57 52 | 49 54 45 2c 20 63 6f 75 |DGRAM_WR|ITE, cou|
|000023f0| 6e 74 29 3b 0d 09 0d 09 | 69 66 20 28 61 77 64 73 |nt);....|if (awds|
|00002400| 2e 74 65 72 6d 69 6e 75 | 73 20 3c 20 30 29 0d 09 |.terminu|s < 0)..|
|00002410| 09 72 65 74 75 72 6e 20 | 54 43 50 5f 65 72 72 6f |.return |TCP_erro|
|00002420| 72 28 61 77 64 73 2e 74 | 65 72 6d 69 6e 75 73 29 |r(awds.t|erminus)|
|00002430| 3b 0d 09 65 6c 73 65 0d | 09 09 72 65 74 75 72 6e |;..else.|..return|
|00002440| 20 63 6f 75 6e 74 3b 0d | 7d 0d 0d 69 6e 74 20 55 | count;.|}..int U|
|00002450| 44 50 53 6f 63 6b 65 74 | 3a 3a 73 65 6c 65 63 74 |DPSocket|::select|
|00002460| 28 42 6f 6f 6c 65 61 6e | 20 2a 20 63 61 6e 52 65 |(Boolean| * canRe|
|00002470| 61 64 2c 20 42 6f 6f 6c | 65 61 6e 20 2a 20 63 61 |ad, Bool|ean * ca|
|00002480| 6e 57 72 69 74 65 2c 20 | 42 6f 6f 6c 65 61 6e 20 |nWrite, |Boolean |
|00002490| 2a 20 65 78 63 65 70 74 | 69 6f 6e 29 0d 7b 0d 09 |* except|ion).{..|
|000024a0| 69 6e 74 09 09 67 6f 6f | 64 69 65 73 20 09 3d 20 |int..goo|dies .= |
|000024b0| 09 30 3b 0d 09 42 6f 6f | 6c 65 61 6e 09 65 72 72 |.0;..Boo|lean.err|
|000024c0| 6f 72 09 09 3d 09 66 61 | 6c 73 65 3b 0d 0d 09 69 |or..=.fa|lse;...i|
|000024d0| 66 20 28 63 61 6e 52 65 | 61 64 20 7c 7c 20 63 61 |f (canRe|ad || ca|
|000024e0| 6e 57 72 69 74 65 29 0d | 09 09 69 66 20 28 73 73 |nWrite).|..if (ss|
|000024f0| 74 61 74 65 20 3d 3d 20 | 53 4f 43 4b 5f 53 54 41 |tate == |SOCK_STA|
|00002500| 54 45 5f 4e 4f 5f 53 54 | 52 45 41 4d 29 0d 09 09 |TE_NO_ST|REAM)...|
|00002510| 09 69 66 20 28 4e 65 77 | 53 74 72 65 61 6d 28 29 |.if (New|Stream()|
|00002520| 29 0d 09 09 09 09 65 72 | 72 6f 72 20 3d 20 74 72 |).....er|ror = tr|
|00002530| 75 65 3b 0d 09 09 09 09 | 0d 09 69 66 20 28 21 65 |ue;.....|..if (!e|
|00002540| 72 72 6f 72 20 26 26 20 | 63 61 6e 52 65 61 64 29 |rror && |canRead)|
|00002550| 0d 09 09 69 66 20 28 2a | 63 61 6e 52 65 61 64 20 |...if (*|canRead |
|00002560| 3d 20 28 61 73 79 6e 63 | 65 72 72 20 21 3d 20 31 |= (async|err != 1|
|00002570| 29 29 0d 09 09 09 2b 2b | 67 6f 6f 64 69 65 73 3b |))....++|goodies;|
|00002580| 0d 09 09 0d 09 69 66 20 | 28 21 65 72 72 6f 72 20 |.....if |(!error |
|00002590| 26 26 20 63 61 6e 57 72 | 69 74 65 29 0d 09 09 69 |&& canWr|ite)...i|
|000025a0| 66 20 28 2a 63 61 6e 57 | 72 69 74 65 20 3d 20 74 |f (*canW|rite = t|
|000025b0| 72 75 65 29 0d 09 09 09 | 2b 2b 67 6f 6f 64 69 65 |rue)....|++goodie|
|000025c0| 73 3b 0d 09 0d 09 69 66 | 20 28 65 78 63 65 70 74 |s;....if| (except|
|000025d0| 69 6f 6e 29 0d 09 09 69 | 66 20 28 2a 65 78 63 65 |ion)...i|f (*exce|
|000025e0| 70 74 69 6f 6e 20 3d 20 | 65 72 72 6f 72 29 0d 09 |ption = |error)..|
|000025f0| 09 09 2b 2b 67 6f 6f 64 | 69 65 73 3b 0d 09 0d 09 |..++good|ies;....|
|00002600| 72 65 74 75 72 6e 20 67 | 6f 6f 64 69 65 73 3b 0d |return g|oodies;.|
|00002610| 7d 0d 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|00002620| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002630| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002640| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002650| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002660| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002670| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002680| 00 00 01 00 00 00 01 fa | 00 00 00 fa 00 00 00 68 |........|.......h|
|00002690| 09 09 09 53 6f 63 6b 65 | 74 50 74 72 20 73 70 3b |...Socke|tPtr sp;|
|000026a0| 0d 09 0d 09 09 09 73 70 | 20 3d 20 73 6f 63 6b 65 |......sp| = socke|
|000026b0| 0a 47 55 53 49 55 44 50 | 2e 63 70 00 02 00 00 00 |.GUSIUDP|.cp.....|
|000026c0| 54 45 58 54 4d 50 53 20 | 00 00 03 dc 01 40 00 00 |TEXTMPS |.....@..|
|000026d0| 00 00 54 45 58 54 4d 50 | 53 20 00 00 03 dc 01 40 |..TEXTMP|S .....@|
|000026e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026f0| 00 00 a6 b4 47 73 00 00 | 25 92 00 00 02 62 66 61 |....Gs..|%....bfa|
|00002700| 6c 73 65 3b 0d 09 09 09 | 0d 09 09 09 72 65 74 75 |lse;....|....retu|
|00002710| 72 6e 28 30 29 3b 0d 09 | 09 7d 0d 09 09 0d 09 09 |rn(0);..|.}......|
|00002720| 2f 2a 20 5b 4d 4e 5d 20 | 54 68 65 79 20 66 6f 72 |/* [MN] |They for|
|00002730| 67 6f 74 20 74 68 69 73 | 20 6f 6e 65 3a 20 2a 2f |got this| one: */|
|00002740| 0d 09 09 0d 09 09 64 65 | 66 61 75 6c 74 3a 0d 09 |......de|fault:..|
|00002750| 09 09 72 65 74 75 72 6e | 20 47 55 53 49 5f 65 72 |..return| GUSI_er|
|00002760| 72 6f 72 28 45 4f 50 4e | 4f 54 53 55 50 50 29 3b |ror(EOPN|OTSUPP);|
|00002770| 0d 09 7d 0d 7d 0d 0d 2f | 2a 0d 20 2a 09 64 75 70 |..}.}../|*. *.dup|
|00002780| 00 00 00 6e 3c ca a8 34 | 3f e5 32 30 00 04 00 03 |...n<..4|?.20....|
|00002790| 00 00 00 00 00 00 a6 da | 95 a8 a6 da 95 a8 a6 71 |........|.......q|
|000027a0| 49 ef 00 00 bf be 00 03 | 00 22 00 02 05 47 55 53 |I.......|."...GUS|
|000027b0| 49 ba 00 03 4a 36 38 00 | 01 32 00 0a 47 55 53 49 |I...J68.|.2..GUSI|
|000027c0| 55 44 50 2e 63 70 00 00 | 00 00 26 73 65 6c 65 63 |UDP.cp..|..&selec|
|000027d0| 74 28 29 20 64 69 64 6e | 27 74 20 72 65 74 75 72 |t() didn|'t retur|
|000027e0| 6e 20 65 6e 6f 75 67 68 | 20 67 6f 6f 64 69 65 73 |n enough| goodies|
|000027f0| 2e 00 00 00 00 48 00 09 | 4d 6f 6e 61 63 6f 00 2a |.....H..|Monaco.*|
|00002800| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002810| 0d 50 72 6f 6a 65 63 74 | 00 06 00 03 00 2b 00 27 |.Project|.....+.'|
|00002820| 01 c7 02 79 00 2b 00 27 | 01 c7 02 79 a6 da da 22 |...y.+.'|...y..."|
|00002830| 00 00 25 1d 00 00 25 35 | 00 00 00 00 01 00 00 00 |..%...%5|........|
|00002840| 00 16 00 01 00 00 01 d8 | 00 00 02 0e 0b 4c 61 73 |........|.....Las|
|00002850| 74 43 68 61 6e 67 65 00 | 00 00 00 1e 00 2b 00 27 |tChange.|.....+.'|
|00002860| 01 c7 02 79 00 2b 00 27 | 01 c7 02 79 00 00 00 00 |...y.+.'|...y....|
|00002870| 00 00 00 00 00 00 00 00 | 00 00 00 00 01 00 00 00 |........|........|
|00002880| 01 fa 00 00 00 fa 00 00 | 00 68 00 31 b4 ac 10 e6 |........|.h.1....|
|00002890| 00 00 00 1c 00 5e 00 01 | 4d 50 53 52 00 02 00 12 |.....^..|MPSR....|
|000028a0| 63 6b 69 64 00 00 00 36 | 03 ed ff ff 00 00 00 72 |ckid...6|.......r|
|000028b0| 00 00 00 00 03 ef ff ff | 00 00 00 be 00 00 00 00 |........|........|
|000028c0| 03 f0 ff ff 00 00 00 d8 | 00 37 e7 1c 00 80 00 00 |........|.7......|
|000028d0| 00 00 00 00 00 00 00 00 | 09 50 72 6f 6a 65 63 74 |........|.Project|
|000028e0| 6f 72 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |or......|........|
|000028f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+